From ecc329fa2aa877f34026b5f4988143d4ae1905e2 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 27 Jul 2020 22:51:34 -0400 Subject: [PATCH] a11y: Add change notification to GtkATContext Emit a ::state-change signal when state changes; this was already a vfunc, but we want to listen to state changes from the inspector too. --- gtk/gtkatcontext.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/gtk/gtkatcontext.c b/gtk/gtkatcontext.c index aa5b424cc2..aefce4df4f 100644 --- a/gtk/gtkatcontext.c +++ b/gtk/gtkatcontext.c @@ -49,8 +49,17 @@ enum N_PROPS }; +enum +{ + STATE_CHANGE, + + LAST_SIGNAL +}; + static GParamSpec *obj_props[N_PROPS]; +static guint obj_signals[LAST_SIGNAL]; + static void gtk_at_context_finalize (GObject *gobject) { @@ -163,6 +172,17 @@ gtk_at_context_class_init (GtkATContextClass *klass) G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + obj_signals[STATE_CHANGE] = + g_signal_new ("state-change", + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkATContextClass, state_change), + NULL, NULL, + NULL, + G_TYPE_NONE, 6, + G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, + G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER); + g_object_class_install_properties (gobject_class, N_PROPS, obj_props); } @@ -399,13 +419,9 @@ gtk_at_context_update (GtkATContext *self) GtkAccessibleRelationChange changed_relations = gtk_accessible_attribute_set_get_changed (self->relations); - GTK_AT_CONTEXT_GET_CLASS (self)->state_change (self, - changed_states, - changed_properties, - changed_relations, - self->states, - self->properties, - self->relations); + g_signal_emit (self, obj_signals[STATE_CHANGE], 0, + changed_states, changed_properties, changed_relations, + self->states, self->properties, self->relations); } /*< private > -- 2.30.2